package com.czp.audit.mapper;

import java.util.List;

import org.apache.ibatis.session.RowBounds;

import com.czp.audit.model.AuditProcess;
import com.czp.audit.model.AuditType;
import com.google.gson.JsonElement;

/**
 * 【环 境】：J2SE 1.7
 * @author   柴志鹏	CHAIZP@GMAIL.COM
 * @version  version 1.0
 * @since    2014-11-13
 */
public interface IAuditMapper {

	/** 
	 * 【描 述】：查询审核类型集合
	 * @param AuditType(审核类型)
	 * @param RowBounds(start, limit)
	 * @return 类型集合
	 * @throws Exception
	 */
	List<AuditType> queryAuditTypeList(AuditType at, RowBounds rb) throws Exception;

	/** 
	 * 【描 述】：查询审核类型数量
	 * @param AuditType(审核类型)
	 * @return 数量
	 * @throws Exception
	 */
	int queryAuditTypeCount(AuditType at) throws Exception;

	/** 
	 * 【描 述】：根据审核类型Id查询审核流程信息
	 * @param typeId审核类型Id
	 * @param rb
	 * @return 审核流程集合
	 * @throws Exception
	 */
	List<AuditProcess> queryAuditProcessListByTypeId(String typeId, RowBounds rb) throws Exception;

	/** 
	 * 【描 述】：根据审核流程Id重新修改所在顺序位置
	 * @param AuditProcess(Id,顺序位置)
	 * @return
	 * @throws Exception
	 */
	int sortProcess(AuditProcess ap) throws Exception;

	/** 
	 * 【描 述】：添加审核类型
	 * @param AuditType
	 * @return
	 * @throws Exception
	 */
	int insertAuditType(AuditType at) throws Exception;

	/** 
	 * 【描 述】：修改审核类型
	 * @param AuditType
	 * @return
	 * @throws Exception
	 */
	int updateAuditType(AuditType at) throws Exception;

	/** 
	 * 【描 述】：删除审核类型
	 * @param AuditType
	 * @return
	 * @throws Exception
	 */
	int deleteAuditType(AuditType at) throws Exception;

	/** 
	 * 【描 述】：获取"可选"审核顺序集合
	 * @param typeId审核类型Id
	 * @return "审核顺序"集合
	 */
	List<AuditProcess> getOptionallyProcess(String typeId) throws Exception;

	/** 
	 * 【描 述】：获取"已选"审核顺序集合
	 * @param typeId审核类型Id
	 * @return "审核顺序"集合
	 * @throws Exception
	 */
	List<AuditProcess> getSelectedProcess(String typeId) throws Exception;

	/** 
	 * 【描 述】：根据审核类型Id查询已选岗位
	 * @param typeId审核类型Id
	 * @return 数量
	 */
	int getSelectedCountByTypeId(String typeId) throws Exception;

	/** 
	 * 【描 述】：根据"审核类型"Id删除"审核流程"数据
	 * @param typeId审核类型Id
	 * @return 被影响的数量
	 * @throws Exception
	 */
	int deleteAuditProcessByTypeId(String typeId) throws Exception;

	/** 
	 * 【描 述】：添加选择的审核岗位流程
	 * @param AuditProcess(typeId类型Id, jobId岗位Id, auditProcess审核下标)
	 * @return 被影响的数量
	 * @throws Exception
	 */
	int addSelectedJob(AuditProcess ap) throws Exception;

	List<AuditType> testProcess(String id);


}
